/*
 *
 *  Copyright (C) 2012-2024
 *  All rights reserved, Designed By 杭州连线客信息技术有限公司
 *  注意：
 *  本软件为杭州连线客信息技术有限公司开发研制，未经购买不得使用
 *  购买后可获得全部源代码（禁止转卖、分享、上传到码云、github等开源平台）
 *  一经发现盗用、分享等行为，将追究法律责任，后果自负
 *
 */

package com.lxk.oms.postorder.domain.req;

import com.lxk.oms.order.domain.req.BaseReq;
import com.lxk.oms.postorder.domain.enums.PostOrderEnums;
import com.lxk.oms.postorder.flow.craete.PostOrderCreateContext;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

/**
 * 申请/创建售后订单
 *
 * @author heyi
 * 2024/9/28
 */
@EqualsAndHashCode(callSuper = true)
@Data
@AutoMapper(target = PostOrderCreateContext.class, reverseConvertGenerate = false)
public class CreatePostOrderReq extends BaseReq {

    /**
     * 售后订单类型 售后类型 0=退款  10=退款退货 20=换货
     *
     * @see com.lxk.oms.postorder.domain.enums.PostOrderEnums
     */
    @NotNull(message = "请输入售后类型")
    private Integer postOrderType;

    /**
     * 申请原因
     */
    private String reasons;

    /**
     * 说明
     */
    private String explains;

    /**
     * 说明图片->多个用逗号分割
     */
    private String explainImg;

    /**
     * 订单号
     */
    @NotBlank(message = "请输入订单号")
    private String orderNo;

    /**
     * 用户ID
     */
    @NotNull(message = "用户ID")
    private Long userId;

    /**
     * 用户Ip
     */
    @NotBlank(message = "请输入用户IP")
    private String userIp;


    /**
     * 货物状态 0=已收到货1=未收到货
     *
     * @see PostOrderEnums.GoodStatus
     */
    private Integer goodStatus = 0;


    /**
     * 售后子订单，根据postOrderType类型 如果是仅退款，则不用传该参数
     */
    @NotNull
    private List<PostOrderItem> postOrderItemList;

    /**
     * 售后订单详情
     */
    @Data
    public static class PostOrderItem {

        /**
         * 子订单ID
         */
        @NotNull(message = "子订单ID不为空")
        private Long orderItemId;

        /**
         * 商品ID
         */
        private Long spuId;

        /**
         * skuId
         */
        @NotNull(message = "skuId不为空")
        private Long skuId;

        /**
         * 数量
         */
        private Integer count;


    }

}
